﻿#define _CRT_SECURE_NO_WARNINGS 1


//#include<string>
//#include<iostream>
//
//using namespace std;
//
//class Person
//{
//public:
//	Person(const string& name = "张三")
//		:_name(name)
//	{
//		cout << "Person(const string& name)" << endl;
//	}
//
//	Person(const Person& p)
//		:_name(p._name)
//	{
//		cout << "Person(const Person& p)" << endl;
//	}
//
//	Person& operator=(const Person& p)
//	{
//		cout << "Person& operator=(const Person& p)" << endl;
//		if (this != &p)
//		{
//			_name = p._name;
//		}
//		return *this;
//	}
//
//	~Person()
//	{
//		cout << "~Person()" << endl;
//	}
//
//protected:
//	string _name;
//};
//
//class Student : public Person
//{
//public:
//	Student(const string& name, int id = 123)
//		:Person(name)
//		,_id(id)
//	{
//		cout << "Student(const string& name, int id = 123)" << endl;
//	}
//
//	Student(const Student& s)
//		:Person(s)
//		,_id(s._id)
//	{
//		cout << "Student(const Student& s)" << endl;
//	}
//
//	Student& operator=(const Student& s)
//	{
//		cout << "Student& operator=(const Student& s)" << endl;
//		if (this != &s)
//		{
//			Person::operator=(s);
//			_id = s._id;
//		}
//		return *this;
//	}
//
//	~Student()
//	{
//		cout << "~Student()" << endl;
//	}
//
//protected:
//	int _id;
//};
//
//int main()
//{
//	Student s1("lisi", 18);
//	Student s2(s1);
//	Student s3("wangwu", 20);
//	s1 = s3;
//
//	return 0;
//}


//#include<iostream>
//
//using namespace std;
//
//// 方法2
//class Base //final
//{
//public:
//	void Func5()
//	{
//		cout << "Base::Func5" << endl;
//	}
//protected:
//	int _a = 1;
//private:
//	// 方法1
//	//Base()
//	//{ }
//};
//
//class Derive : public Base
//{
//public:
//	void Func4()
//	{
//		cout << "Derive::Func4" << endl;
//	}
//protected:
//	int _b = 2;
//};
//
//int main()
//{
//	Base b;
//	Derive d;
//
//	return 0;
//}


//#include<iostream>
//
//using namespace std;
//
//class Student;
//
//class Person
//{
//public:
//	friend void Display(const Person& p, const Student& s);
//protected:
//	string _name;
//};
//
//class Student : public Person
//{
//protected:
//	int _id;
//};
//
//void Display(const Person& p, const Student& s)
//{
//	cout << p._name << endl;
//	cout << s._id << endl;
//}
//
//int main()
//{
//	Person p;
//	Student s;
//
//	// 编译报错：error C2248: “Student::_stuNum”: ⽆法访问 protected 成员
//	// 解决⽅案：Display也变成Student 的友元即可
//	Display(p, s);
//
//	return 0;
//}


//#include<iostream>
//
//using namespace std;
//
//class Person
//{
//public:
//	string _name;
//	static int _count;
//};
//
//int Person::_count = 0;
//
//class Student : public Person
//{
//protected:
//	int _id;
//};
//
//int main()
//{
//	Person p;
//	Student s;
//
//	// 这⾥的运⾏结果可以看到⾮静态成员_name的地址是不⼀样的
//	// 说明派⽣类继承下来了，⽗派⽣类对象各有⼀份
//	cout << &p._name << endl;
//	cout << &s._name << endl;
//
//	// 这⾥的运⾏结果可以看到静态成员_count的地址是⼀样的
//	// 说明派⽣类和基类共⽤同⼀份静态成员
//	cout << &p._count << endl;
//	cout << &s._count << endl;
//
//	// 公有的情况下，⽗派⽣类指定类域都可以访问静态成员
//	cout << Person::_count << endl;
//	cout << Student::_count << endl;
//
//	return 0;
//}


//#include<iostream>
//
//using namespace std;
//
//class Person
//{
//public:
//	string _name;
//};
//
//class Student : virtual public Person
//{
//protected:
//	int _id; // 学号
//};
//
//class Teacher : virtual public Person
//{
//protected:
//	int _title; // 职称
//};
//
//class Assistant : public Student, public Teacher
//{
//protected:
//	string _major_course; // 主修课程
//};
//
//int main()
//{
//	Assistant a;
//	a._name = "张三";
//
//	return 0;
//}


//#include<vector>
//#include<iostream>
//
//using namespace std;
//
//int main()
//{
//    int n = 0;
//    cin >> n;
//    vector<int> v(n + 1);
//    for (int i = 0; i <= n; i++)
//    {
//        v[i] = i;
//    }
//    while (v.size() != 1)
//    {
//        for (int i = 0; i < v.size(); i++)
//        {
//            if (i % 2 == 0)
//            {
//                v[i] = -1;
//            }
//        }
//        for (int i = 0; i < v.size(); i++)
//        {
//            if (v[i] == -1)
//            {
//                v.erase(v.begin() + i);
//            }
//        }
//    }
//    cout << v[0] << endl;
//
//    return 0;
//}


#include<vector>
#include<iostream>

using namespace std;

int minCostClimbingStairs(vector<int>& cost)
{
    int size = cost.size();
    vector<int> dp(size + 1);
    dp[0] = dp[1] = 0;
    for (int i = 2; i < size + 1; i++)
    {
        dp[i] = min(dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2]);
    }
    return dp[size];
}

int main()
{
    vector<int> v = { 10,15,20 };
    cout << minCostClimbingStairs(v) << endl;

	return 0;
}